package com.ruoyi.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.BdmBalanceChange;
import com.ruoyi.system.domain.dto.BdmBalanceChangeDto;
import com.ruoyi.system.domain.dto.BdmQueryCommissionDto;
import com.ruoyi.system.domain.vo.*;
import com.ruoyi.system.domain.vo.applet.BdmBalanceChangeAmountVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户余额变动Mapper接口
 * 
 * @author ruoyi
 * @date 2024-12-19
 */
public interface BdmBalanceChangeMapper  extends BaseMapper<BdmBalanceChange>
{
    /**
     * 查询用户余额变动
     * 
     * @param id 用户余额变动主键
     * @return 用户余额变动
     */
    public BdmBalanceChange selectBdmBalanceChangeById(Long id);

    /**
     * 查询用户余额变动列表
     * 
     * @param bdmBalanceChange 用户余额变动
     * @return 用户余额变动集合
     */
    public List<BdmBalanceChange> selectBdmBalanceChangeList(BdmBalanceChange bdmBalanceChange);

    /**
     * 新增用户余额变动
     * 
     * @param bdmBalanceChange 用户余额变动
     * @return 结果
     */
    public int insertBdmBalanceChange(BdmBalanceChange bdmBalanceChange);

    /**
     * 修改用户余额变动
     * 
     * @param bdmBalanceChange 用户余额变动
     * @return 结果
     */
    public int updateBdmBalanceChange(BdmBalanceChange bdmBalanceChange);

    /**
     * 删除用户余额变动
     * 
     * @param id 用户余额变动主键
     * @return 结果
     */
    public int deleteBdmBalanceChangeById(Long id);

    /**
     * 批量删除用户余额变动
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBdmBalanceChangeByIds(Long[] ids);

    /**
     * 分页 查询 用户 余额 积分 佣金变动列表
     */
    List<BdmBalanceChange> listPage(@Param("bdmBalanceChangeDto") BdmBalanceChangeDto bdmBalanceChangeDto);

    List<BdmBalanceChangeVo> listMemberAsset(@Param("bdmBalanceChangeDto") BdmBalanceChangeDto bdmBalanceChangeDto);

    /**
     * 统计余额
     */
    BdmStatisticalBalanceVo statisticalBalance();

    /**
     * 统计积分
     */
    BdmStatisticalIntegralVo statisticalIntegral();

    /**
     * 查询  佣金
     */
    List<BdmBalanceChange> bdmQueryCommissionDto(@Param("bdmQueryCommissionDto") BdmQueryCommissionDto bdmQueryCommissionDto);

    /**
     * 统计佣金
     */
    BdmStatisticalBrokerageVo statisticalBrokerage();

    /**
     * 查询会员账户资产
     */
    BdmMemberAccountAssetsVo queryMemberAccountAssets();

    /**
     * 查询 订单概况 支付统计
     */
    BdmOrderProfileAndPaymentStatisticsVo queryOrderProfileAndPaymentStatistics(@Param("startTime") String startTime,@Param("endTime")  String endTime);

    /**
     * 查询 收支趋势 type 1 近七天  2 近一个月
     */
    List<BdmRevenueAndExpenditureTrendVo> queryRevenueAndExpenditureTrend(@Param("type") Long type);


    /**
     * 查询业务类型
     */
    List<String> queryBusinessType();

    List<BdmBalanceChangeAmountVo> getExpenditurePage(@Param("addOrSubtract") Long addOrSubtract, @Param("userId") Long userId);
}
